home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / fb386 / io_bas / get_pcm.bas < prev    next >
BASIC Source File  |  1994-06-01  |  2KB  |  50 lines

  1. 10 '
  2. 20 '   < AD サンプリングデーターの取得 ( I/O 操作サンプル ) >
  3. 30 '                                  for F-BASIC 386 V2.1 L10 以上
  4. 40 '                                      Programmed by Luzz-tum
  5. 50 '
  6. 60 ' サブルーチン名「 *GET_PCM 」
  7. 70 '  このルーチンでは空気の振幅の度合いを取得します。この値をメチャ
  8. 80 ' クチャ速く連続して取っていくと、PCMデーターになります。つまり
  9. 90 ' 音の実体を数値化したデーターを得るという事です。
  10. 100 '
  11. 110 '  単純に GOSUB *GET_PCM を実行すると変数 W_DAT にデーターが返っ
  12. 120 ' てきます。なお、返ってくる値は +126 から -129 までですが -128 以
  13. 130 ' 下の信頼性については断言しきれません、が、大丈夫なようです。
  14. 140 '  又、これは音量ではないので、音量が最大でも値にゼロが返ってくる
  15. 150 ' 事もありえます。
  16. 160 '
  17. 170 '  このサンプル内の方法では、SND ファイルの中身は表示できません。
  18. 180 ' 表示したいという人は SND ファイルの PCM データーをすぐ表示できる
  19. 190 ' 形に変換するルーチンを別ファイル「 DISP_SND.BAS 」に収録していま
  20. 200 ' すので、そちらをご覧下さい。(自分の声を綺麗に表示するサンプル付
  21. 210 ' きです。)
  22. 220 '
  23. 230 '
  24. 240 SCREEN 0:SCREEN @0:VIEW:WINDOW:COLOR 7,0,7,0:CLS:WIDTH 80,25
  25. 250 DEFLNG A-Z:DIM BUF(200)
  26. 260 GET@A(0,0)-(256,0),BUF
  27. 270 PRINT "振幅データーをリアルタイム表示します。"
  28. 280 PRINT "マイクに何か音を入れてください。"
  29. 290 LOCATE 0,23:PRINT "リターンキーで終了します。"
  30. 300 GOSUB *MIC_ON
  31. 310 WHILE INKEY$<>CHR$(13)
  32. 320   Y=Y+1:Y=Y*-(Y<480):GOSUB *GET_PCM
  33. 330   PUT@A(331,Y)-(587,Y),BUF:LINE (460,Y)-(460+W_DAT,Y),PSET,7
  34. 340 WEND
  35. 350 GOSUB *MIC_OFF
  36. 360 END
  37. 370 '
  38. 380 *GET_PCM
  39. 390  W_DAT=INP(&H4E7,1)-129
  40. 400  RETURN
  41. 410 '
  42. 420 *MIC_ON
  43. 430  VOL(1)=64:GOSUB *VOL_SET:RETURN
  44. 440 *MIC_OFF
  45. 450  VOL(1)=0:GOSUB *VOL_SET:RETURN
  46. 460 *VOL_SET
  47. 470  IF VOL(1)=0 OUT &H04E3,2:OUT &H04E2,0:RETURN
  48. 480  OUT &H04E3,6:OUT &H04E2,VOL(1)-1
  49. 490  RETURN
  50.